<?

class modelo__sessao {

    protected $pagina_login;
    protected $pagina_admin;
    protected $get_login_incorreto;
    protected $c;
    protected $var_login_usuario = NULL;
    protected $var_login_senha = NULL;

    public function __construct() {
        $this->c = model_conn::get_conn();
    }

    public function inicia_verificacao() {

        if (!empty($_SESSION['login_usuario']) && !empty($_SESSION['login_senha'])) {
            $this->var_login_usuario = $_SESSION['login_usuario'];
            $this->var_login_senha = $_SESSION['login_senha'];
        }

        if (isset($_POST['logar_usuario']) && isset($_POST['logar_senha'])) {
            // fazendo login:

            if (!$this->verifica($_POST['logar_usuario'], $_POST['logar_senha'])) {

                // login incorreto.
                $this->abre_login($this->get_login_incorreto);
            } else {
                // login correto.

                $_SESSION['login_usuario'] = $_POST['logar_usuario'];
                $_SESSION['login_senha'] = $_POST['logar_senha'];

                header("Location: $this->pagina_admin");
            }
        } else if (isset($this->var_login_usuario) && isset($this->var_login_senha)) {

            // verificando se os dados estão corretos:
            if (!$this->verifica($this->var_login_usuario, $this->var_login_senha)) {

                // login incorreto sendo usado.
                $this->abre_login($this->get_login_incorreto);
            }
        } else {
            $this->abre_login();
        }
    }

    public function set_pagina_login($pagina) {
        $this->pagina_login = $pagina;
    }

    public function set_pagina_admin($pagina) {
        $this->pagina_admin = $pagina;
    }

    public function set_get_login_incorreto($valor) {
        $this->get_login_incorreto = $valor;
    }

    /**
     *
     * @param type $usuario
     * @param type $senha
     * @return boolean 
     */
    protected function verifica($usuario, $senha) {

	if(strtolower(PHP_OS) == "linux") {
	    $usuario = addslashes($usuario);
	    $senha = addslashes($senha);
	}
        
        $encontrou_usuario = false;
        
        $find_usuario = new EASYNC___FIND__usuario();
        $find_usuario->filterByLogin_usuario($usuario);
        $find_usuario->filterByLogin_senha($senha);
        $colecao = $find_usuario->get();
        
        if($colecao->getAmount() == 0) {
            return false;
        }
        return true;
    }

    protected function abre_login($get = '') {
        header("Location: $this->pagina_login" . $get);
        exit();
    }

    public static function encerrar_sessao() {
        session_destroy();
        $_SESSION['login_usuario'] = '';
        $_SESSION['login_senha'] = '';
    }

}
?>